package org.liang.job;

import java.util.List;

import org.liang.job.beans.Job;
import org.liang.job.beans.JobInfo;
import org.liang.job.beans.TriggerInfo;

/**
 * 自动任务查询器.
 * 
 * <pre>
 * 提供一下行为：
 * 1. 查询所有任务
 * 2. 根据 任务编号 查询任务信息（所有信息）
 * 3. 根据 任务编号 查询任务信息（基本信息）
 * 4. 根据 任务标题查 询任务
 * 5. 根据 任务组 查询任务
 * 6. 根据 任务编号 获取触发器
 * 7. 查询所有触发器
 * 8. 根据 触发器组 查询触发器
 * 9. 根据 触发时间串 查询触发器
 * </pre>
 *
 * @author L.Yang
 * @version 1.0, 2015年10月16日
 */
public interface SchedulerFetcher {

    /**
     * 查询所有任务.
     */
    List<JobInfo> queryAllJobs();

    /**
     * 根据 任务编号 查询任务信息（所有信息）.<br>
     * 包含任务参数、任务时间字符串 等信息
     * 
     * @param jobId
     *            任务编号
     */
    Job queryJobById(String jobId);

    /**
     * 根据 任务编号 查询任务信息（基本信息）.
     * 
     * @param jobId
     *            任务编号
     */
    JobInfo queryJobInfoById(String jobId);

    /**
     * 根据 任务标题查 询任务.
     * 
     * @param title
     *            标题
     */
    List<JobInfo> queryJobsByTitle(String title);

    /**
     * 根据 任务组 查询任务.
     * 
     * @param groupid
     *            任务组编号
     */
    List<JobInfo> queryJobsByGroup(String groupid);

    /**
     * 根据 任务编号 获取触发器.
     * 
     * @param jobid
     *            任务编号
     */
    List<TriggerInfo> fetchTriggersByJobId(String jobid);

    /**
     * 查询所有触发器.
     */
    List<TriggerInfo> queryAllTriggers();

    /**
     * 根据 触发器组 查询触发器.
     * 
     * @param group
     *            触发器组
     */
    List<TriggerInfo> queryTriggersByGroup(String group);

    /**
     * 根据 触发时间串 查询触发器.
     * 
     * @param cron
     *            时间字符串
     */
    List<TriggerInfo> queryTriggersByCron(String cron);
}
